\chapter{Cahier des charges}

\emph{Cette partie introduit les objectifs finaux de l'application, les acteurs
mis en jeu ainsi que les contraintes fonctionnelles. Pour cette partie, nous
sortirons du contexte académique pour nous placer dans un cadre industriel}

\section{Présentation générale}

\subsection{Contexte}
[fictif]

Dans le cadre d'un projet informatique, l'Université du Sud Toulon Var souhaite
revoir la façon dont sont gérés les emploi du temps des étudiants. L'USTV lance
donc un appel d'offre à différentes SSII. Le budget n'est pas figé mais le
projet doit aboutir avant le 15 mai. 
L'USTV est une université de taille moyenne mais souhaitant améliorer les
services qu'elle propose. Ainsi en se dotant d'un nouveau système de gestion
d'emploi du temps, l'USTV compte mieux gérer le temps de son personnel et
proposer une répartition du temps plus judicieuse à ses étudiants. 


\section{Description de la demande}

\subsection{Objectifs}

L'objectif de ce projet consiste à réaliser un emploi du temps destiné aux
étudiants et aux enseignants. Celui-ci permettra aux utilisateurs de consulter
l'emploi du temps des formations proposées, l'emplois du
temps des enseignants et d'obtenir la disponibilité d'une salle de cours.
Le système proposera des fonctions permettant de faciliter les
différentes recherches. L'administration du système sera le plus possible
automatisée et devra proposer des fonctions permettant aux enseignants de
définir un éventail de contraintes personnelles et, pour les enseignants
responsables, des contraintes sur l'emploi du temps de la formation.

\subsection{Fonctionnalités du système}

\begin{itemize}
\item Consultation de l'emploi du temps d'une promotion ;
\item Consultation de l'emploi du temps d'un enseignant ;
\item Consultation de la disponibilité d'une salle ;
\item Consultation accessible sur le réseau à partir d'un poste fixe ou d'un
smartphone ;
\item Réservation d'une salle par un enseignant ;
\item Réservation d'un matériel par un enseignant ;
\item Filtrage des emploi du temps ;
\item Gestion des contraintes des enseignants et des étudiants ;
\item L'administration des données sus-cités par un utilisateur spécial :
l'administrateur.
\end{itemize}


\subsection{Description des concepts}
\label{description_concepts}

Formalisons et établissons une premier classement des
concepts que nous avons pu receuillir au cours des premières phases d'analyse. 
Ces concepts nous aideront à décrire les données du systèmes.

\subsection{Les Utilisateurs}
\begin{itemize}
   \item Les utilisateurs de cette application sont de trois types
\begin{itemize}
  \item Ceux qui visionnent les emploi du temps
  \item Ceux qui émettent des demandes de modification de l'EDT
  \item Ceux qui modifient l'EDT et l'administre
\end{itemize}
  \item Les utilisateurs ont des droits d'accès. Un droit d'accès est défini
  	par un niveau allant de 0 à 9. Le niveau 0 indique que l'utilisateur n'a
  	aucun droit. Le niveau 8 correspond au niveau administrateur, cet utilisateur a
  	tous les droits sur l'application. Le niveau 9 correspond au niveau super
  	administrateur, et seul les responsables de l'application ont ce niveau
  \item Les utilisateurs peuvent-être des étudiants, des enseignants, des
  doctorants, des vacataires, des ATER, des personnes de l'administration ou
  toute autre personne autorisée
  \item Les étudiants ont un nom, prénom, numéro d'étudiant, e mail et
  éventuellement un numéro de téléphone
  \item Les étudiants et utilisateurs semblables peuvent uniquement consulter
  l'emploi du temps et utiliser les fonctions de recherche de celui-ci
  \item Les enseignant ont un nom, prénom, numéro de personnel, e mail,
  éventuellement un numéro de téléphone et un indice. Un enseignant peut-être
  responsable d'une étape associée à une filière (L1INFO, M1SIS...)
\end{itemize}

\subsubsection{L'université, les salles, le matériel}

\begin{itemize}
  \item L'université est divisée en départements (IUT GEII, S\&T,
  Lettres\ldots) en étape (L1, L2, L3) et en filière (Info, Bio\ldots)
  \item L'université est composée de bâtiments qui peuvent être partagés par
  plusieurs départements
  \item Un bâtiment est composé de salles
  \item Une salle a un type (amphi, tp info, tp bio...) et une description
  (ex. matériel disponible dans cette salle)
  \item Chaque département propose aux enseignants du matériel qu'ils peuvent
  emprunter pour une durée donnée
  \item Un matériel a un type, une date d'achat, un état et quelques
  caractéristiques
\end{itemize}

\subsubsection{L'emploi du temps}

\begin{itemize}
  \item Chaque département gère l'emploi du temps des filières qui lui sont
  rattachées
  \item Chaque département a donc un administrateur qui est le seul autorisé à
  modifier l'emploi du temps
  \item L'emploi du temps se compose de cours qui ont lieu avec une ou
  plusieurs personnes du corps enseignant (elles peuvent-être externes)
  \item Chaque cours a une heure de début et une heure de fin pour une date
  donnée
  \item Un même cours peut-être suivi par plusieurs filières de départements
  différents
  \item Un cours a un type (cours magistral, TD, TP, autre) 
  \item Un cours a une salle qui lui est attribuée
  \item Un cours peut-être dupliqué sur plusieurs semaines (donc aux mêmes
  heures)
  \item Un cours peut avoir des notes qui lui sont associées. Seul l'enseignant
  dispensant ce cours peut ajouter des notes au cours.
\end{itemize}

\subsection{Les contraintes de l'emploi du temps}

\begin{itemize}
  \item Deux cours d'une même formation ne peuvent pas se chevaucher. Une salle
  ne peut pas être occupée par deux cours différents. Un enseignant ne peut pas
  dispenser deux cours à un instant donné.
  \item Un enseignant peut définir ses contraintes personnels quant aux heures
  qu'il fait (ex. pas de cours le lundi matin). L'enseignant responsable est
  alors chargé de valider ces contraintes
  \item L'enseignant responsable peut définir des contraintes sur la formation
  qu'il gère. Ces contraintes peuvent-être : pas de cours théoriques le lundi
  matin midi après 16h, préférer les cours le matin, et les TD/TP l'après-midi
\end{itemize}


\subsubsection{L'administration}
\begin{itemize}
  \item Un administrateur contrôle l'intégralité d'un département mais deux
  départements peuvent proposer des cours en commun à des filières différentes.
  Cette fonctionnalité doit garantir la cohérence et l'intégrité des données
  \item L'administrateur est chargé de gérer de la gestion des emploi du temps
  et des enseignants
  \item L'administrateur peut ajouter une filière au sein de son département
  \item L'administrateur peut ajouter des enseignants (MC, PR, Ater,
  Doctorants...) à la BDD
  \item L'administrateur peut indiquer qu'un enseignant (ou personne similaire)
  n'est pas disponible pour une période donnée (cause maladie, congès de
  recherche\ldots)
\end{itemize}

\section{Contraintes et exigences non fonctionnels}

\subsection*{Contrainte 001}

Le système doit être disponible 24h/24 et 7j/7.

\subsection*{Contrainte 002}

Le système doit être multi-utilisateurs.

\subsection*{Contrainte 003}

Le système doit disposer d'une interface graphique permettant
\begin{enumerate}
  \item son administration ;
  \item sa consultation.
\end{enumerate}


\subsection*{Contrainte 004}
L'accès aux fonctions d'administration doit-être sécurisé.

\subsection*{Contrainte 005}
Le système doit permettre l'accès concurrent à des mêmes données (cours en
commun pour 2 filières d'un département différent).

\subsection*{Contrainte 006}
Le système doit avoir une politique de sécurité sans faille pour chaque utilisateur
L'application côté consultation doit-être simple et proposer des fonctions de
recherches avancées (à définir avec l'expert métier).

\subsection*{Contrainte 007}
Le système doit pouvoir être facilement porté sur différentes plateformes
(smartphone).

\subsection*{Contrainte 008}
Le système doit pouvoir être dôté de la possibilité pour un enseignant d'ajouter
des notes aux cours qu'il va donner sans que celles-ci doivent être validées par
un administrateur.

\subsection*{Contrainte 009}
Le système doit stocker les mots de passe des utilisateurs de façon cryptée. Un
utilisateur se connectant manuellement à la base de données ne doit pas pouvoir
avoir plus de droit qu'en se connectant par le biais de l'interface graphique.

\subsection*{Contrainte 010}
Le système ne doit pas être contraint à l'utilisateur d'un seul type de base de
données. On doit pouvoir facillement exporter le système sur un autre système de
gestion de base de données (MySQL, Oracle, SqlLite\ldots).

\section{Besoins d'IHM}

L'interface utilisateurs doit être scindées en deux.

\subsection{Interface d'aministration}

Elle doit permettre de gérer l'administration du système, à savoir l'ajout, la
suppression ou la modification d'un évènement, la gestion du personnel, des
ressources, des droits d'accès etc. Cette interface devra proposer des fonctions
de filtrage des données pour, par exemple, n'afficher que les enseignants d'une
matière.

L'interface d'administration devra être un programme installable.

\subsection{Interface de visualisation}

Elle doit permettre un accès \textbf{simple} et \textbf{rapide} aux trois types
d'emploi du temps (promotion, enseignant, salle). Elle doit-être accessible
depuis un navigateur WEB mais doit utiliser les données de la base de données
(pour prévoir une application sur smartphone).


\section{Déroulement du projet}

\subsection{Planification}

\emph{L'organisation du temps est une étape indispensable dans la réalisation
d'un projet. C'est pourquoi nous avons pris soin de découper le projet en plusieurs
grandes étapes et de se fixer pour chacune d'entre elles des délais. Ceux-ci
sont regroupés dans le diagramme Gantt ci dessous.}

\begin{figure}
\includegraphics[width=600px, height=400px, angle=90]{img/gantt.eps}
\caption{Planning prévisionnel (Diagramme Gantt)}
\end{figure}

\newpage

\subsection{Gestion humaine}

\emph{Les indications ci dessous sont données à titre indicatif. Chaque membre
a apporté sa contribution à chaque phase de la réalisation.} 
\\\\
Répartition des tâches aux membres du groupe :

\begin{description}
\item[Romain]  :
\begin{itemize}
  \item \textbf{Responsable de l'axe fonctionnelle}
  \item Développement de l'IHM en Java ;
  \item Mise en place des contrôleurs du modèle MVC.
  \end{itemize}
\item[Vincent]  : 
\begin{itemize}
  \item \textbf{Responsable de l'axe statique}
  \item Mise en place de la couche "données" et de la couche DAO (avec JPA) ;
  \item Mise en place des contrôleurs du modèle MVC.
\end{itemize}
\item[Jonathan] : 
\begin{itemize}
  \item \textbf{Responsable de l'axe dynamique}
  \item Elaboration des manageurs de données ;
  \item Mise en place de l'internationnalisation de l'application.
\end{itemize}
\end{description}

